home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #026 (19xx)(Amiga User Group Deutschland e.V.).zip / Franz PD Disk #026 (19xx)(Amiga User Group Deutschland e.V.).adf / MaxiDat / MaxiDat_V2.02 (.txt) < prev    next >
AmigaBASIC Source Code  |  1988-12-10  |  18KB  |  842 lines

  1. REM ***********************
  2. REM *** Dateiverwaltung ***
  3. REM ***********************
  4. REM *** MaxiDAT Ver2.02 ***
  5. REM ***   written by    ***
  6. REM *** Christoph  Hust ***
  7. REM ***      in         ***
  8. REM ***  Februar 1989   ***
  9. REM ***********************
  10.  
  11. REM *********************************
  12. REM *** H a u p t p r o g r a m m ***
  13. REM *********************************
  14.                              
  15. SCREEN 1,640,400,2,2 
  16. WINDOW 2,"             * * * * *   M a x i D A T   V  2 . 0 2   * * * * *",,16,1
  17.  
  18. WIDTH 78
  19.  
  20. ON BREAK GOSUB Ende
  21. BREAK ON
  22.  
  23. ON ERROR GOTO Fehler
  24.  
  25. INPUT "Drucker vorhanden (J/N) ";D$
  26. IF LEFT$(UCASE$(D$),1)="J" THEN
  27.   Drucker=1
  28. END IF
  29.  
  30. Version$="Ver. 2.02, 02. 3. 1989"
  31.  
  32. Drive$="DF0:"
  33. Pfad$="MaxiDAT/Daten/"
  34.     
  35. PALETTE 0,1,1,1
  36. PALETTE 1,0,0,0
  37. PALETTE 2,1,0,0
  38. PALETTE 3,0,0.5,1
  39.  
  40. IF Drucker=1 THEN
  41.   LPRINT
  42. END IF
  43.  
  44. DIM Laenge(11),Bezeichnung$(11),In$(11),Ein$(11)
  45.  
  46. MENU 1,0,1,"Projekt  "
  47. MENU 1,1,1,"Datei einrichten "
  48. MENU 1,2,1,"Daten eingeben   "
  49. MENU 1,3,1,"Datei benutzen   "
  50. MENU 1,4,1,"Neustart         "
  51. MENU 1,5,0,"-----------------"
  52. MENU 1,6,1,"Ende             "
  53.  
  54. MENU 2,0,Drucker,"Drucker  "
  55. MENU 2,1,1,"Alles ausdrucken MIT  "
  56. MENU 2,2,1,"Alles ausdrucken OHNE "
  57. MENU 2,3,1,"Auswahl ausdrucken    "
  58.  
  59. MENU 3,0,1,"Disk  "
  60. MENU 3,1,1,"Momentanes Directory ändern "
  61. MENU 3,2,1,"Diskettenlaufwerk ändern    "
  62. MENU 3,3,1,"Inhalt anzeigen             "
  63. MENU 3,4,1,"Datei löschen               "
  64.  
  65. MENU 4,0,1,"Grafik  "
  66. MENU 4,1,1,"Datei anlegen   "
  67. MENU 4,2,1,"Grafik zeichnen "
  68.  
  69. MENU 5,0,1,"Infos  "
  70. MENU 5,1,1,"Programminfo "
  71.  
  72. Hauptprogramm:
  73.              
  74. ON MENU GOSUB Men
  75. MENU ON
  76.  
  77. WHILE 1
  78.   MENU ON
  79.   CLS
  80.   COLOR 1
  81.   PRINT "    Dateiverwaltung AMIGA"
  82.   PRINT "   -----------------------"
  83.   PRINT 
  84.   PRINT " Version : ";Version$
  85.   PRINT 
  86.   DATUM dtm$
  87.   PRINT "  Heutiges Datum : ";dtm$
  88.   PRINT "  Uhrzeit        : ";TIME$
  89.   dummy$=INKEY$
  90.   SLEEP
  91.   dummy$=INKEY$
  92.   SLEEP  
  93.   dummy$=INKEY$
  94. WEND
  95.                                                                  
  96. REM *********************************************************
  97. REM *** Dieses Unterprogramm wertet die MENU-Funktion aus ***
  98. REM *** und verzweigt dann zu den ausgewählten Funktionen ***
  99. REM *********************************************************
  100.  
  101. Men:
  102.   Titel=MENU(0)
  103.   Punkt=MENU(1)
  104.   IF Titel=1 THEN
  105.     IF Punkt=1 THEN
  106.       GOSUB Einrichten
  107.     END IF
  108.     IF Punkt=2 THEN
  109.       GOSUB Eingabe
  110.     END IF
  111.     IF Punkt=3 THEN
  112.       GOSUB Benutzen
  113.     END IF
  114.     IF Punkt=4 THEN
  115.       GOSUB Loeschen
  116.     END IF
  117.     IF Punkt=6 THEN
  118.       GOSUB Ende
  119.     END IF
  120.   END IF
  121.   IF Titel=2 THEN
  122.     IF Punkt=1 THEN
  123.       GOSUB DruckeAlles
  124.     END IF
  125.     IF Punkt=2 THEN
  126.       GOSUB DruckeAllesOHNE
  127.     END IF
  128.     IF Punkt=3 THEN
  129.       GOSUB DruckeAuswahl
  130.     END IF
  131.   END IF
  132.   IF Titel=3 THEN
  133.     IF Punkt=1 THEN
  134.       GOSUB ChangeDir
  135.     END IF
  136.     IF Punkt=2 THEN
  137.       GOSUB ChangeDrive
  138.     END IF
  139.     IF Punkt=3 THEN
  140.       GOSUB ZeigeDir
  141.     END IF
  142.     IF Punkt=4 THEN
  143.       GOSUB DeleteFile
  144.     END IF
  145.   END IF
  146.   IF Titel=4 THEN
  147.     IF Punkt=1 THEN
  148.       GOSUB GrafikdateiAnlegen
  149.     END IF
  150.     IF Punkt=2 THEN
  151.       GOSUB Zeichnen
  152.     END IF
  153.   END IF
  154.   IF Titel=5 THEN
  155.     GOSUB ProgrammInfo
  156.   END IF
  157. RETURN
  158.  
  159. REM ********************************************
  160. REM *** Hier beginnen die Programmfunktionen ***
  161. REM ********************************************
  162.  
  163. Einrichten:
  164.   WHILE Jn$<>"J"
  165.     Gesamtlaenge = 0
  166.     CLS
  167.     MENU OFF
  168.     PRINT :PRINT 
  169.     FOR I=1 TO 11
  170.       LOCATE I+2,1
  171.       PRINT USING "##";I
  172.       COLOR 1,2
  173.       LOCATE 1,1
  174.       PRINT "BITTE BEZEICHNUNG EINGEBEN. * = Ende.     "    
  175.       COLOR 1,0
  176.       LOCATE I+2,4
  177.       PRINT Bezeichnung$(I);
  178.       LOCATE I+2,4
  179.       LINE INPUT NeueBezeichnung$
  180.       NeueBezeichnung$=LEFT$(NeueBezeichnung$,40)
  181.       IF NeueBezeichnung$<>"" THEN
  182.         Bezeichnung$(I)=NeueBezeichnung$
  183.       END IF
  184.       BeLaenge=LEN(Bezeichnung$(I))
  185.       IF BeLaenge>Maxbezlaenge THEN
  186.         Maxbezlaenge=BeLaenge
  187.       END IF
  188.       LOCATE I+2,4
  189.       PRINT Bezeichnung$(I)
  190.       PRINT STRING$(20," ")
  191.       COLOR 1,2
  192.       LOCATE 1,1
  193.       PRINT "BITTE MAXIMALE LÄNGE DER EINGABE EINGEBEN."  
  194.       COLOR 1,0
  195.       LOCATE I+2,42
  196.       PRINT Laenge(I)
  197.       LOCATE I+2,42
  198.       LINE INPUT Laenge$
  199.       NeueLaenge=INT(VAL(Laenge$))
  200.       IF NeueLaenge<>0 THEN
  201.         Laenge(I)=NeueLaenge
  202.       END IF  
  203.       Fertig=0
  204.       IF Bezeichnung$(I)="*" THEN
  205.         Anzmsk=I
  206.         Fertig=1
  207.       END IF
  208.       IF Laenge(I)<=0 OR Laenge(I)>50 THEN
  209.         Laenge(I)=45
  210.       END IF
  211.       IF Fertig THEN
  212.         I=16
  213.       END IF
  214.     NEXT I
  215.     Anzmsk=Anzmsk-1
  216.     Jn$=""
  217.     LOCATE 1,1
  218.     PRINT "SIND DIESE EINGABEN RICHTIG   (J für JA, N für NEIN) ?";
  219.     LINE INPUT "";Jn$
  220.     Jn$=LEFT$(UCASE$(Jn$),1)
  221.   WEND
  222.   Jn$=""                            ' fuer naechsten Aufruf loeschen
  223.   CLS
  224.   LOCATE 1,1
  225.   PRINT "Bitte geben Sie den Namen für die neue Datei ein !"
  226.   LINE INPUT Datinfnam$
  227.   Datinfnam$="Daten/"+Datinfnam$+".INFOS"
  228.   OPEN Datinfnam$ FOR OUTPUT AS #2
  229.     WRITE #2,Maxbezlaenge
  230.     WRITE #2,Anzmsk
  231.     WRITE #2,1                        ' Satznummer
  232.     FOR I=1 TO Anzmsk
  233.       WRITE #2,Bezeichnung$(I)
  234.       WRITE #2,Laenge(I)
  235.     NEXT I
  236.   CLOSE #2          
  237. RETURN             
  238.  
  239. Eingabe:
  240.   CLS
  241.   LINE INPUT "Name der Datei ? ";Datnam$
  242.   Datinfnam$=Drive$+Pfad$+Datnam$+".INFOS"
  243.   Datnam$=Drive$+Pfad$+Datnam$+".DATEN"
  244.   GOSUB LeseInfos
  245.   Satz=Satznummer
  246.   OPEN "r",#1,Datnam$,550
  247.     FIELD #1,Laenge(1) AS In$(1),Laenge(2) AS In$(2),Laenge(3) AS In$(3),Laenge(4) AS In$(4),Laenge(5) AS In$(5),Laenge(6) AS In$(6),Laenge(7) AS In$(7),Laenge(8) AS In$(8),Laenge(9) AS In$(9),Laenge(10) AS In$(10),Laenge(11) AS In$(11)
  248.     WHILE Jn2$<>"N"
  249.       GOSUB Eing
  250.       FOR I=1 TO 11
  251.         LSET In$(I)=Ein$(I)
  252.         Ein$(I)=""
  253.       NEXT I
  254.       PUT #1,Satz
  255.       Satz=Satz+1
  256.       LOCATE 20,1
  257.       Jn2$=""
  258.       INPUT "Weiteren Datensatz eingeben ";Jn2$
  259.       Jn2$=LEFT$(UCASE$(Jn2$),1)
  260.     WEND
  261.     Jn2$=""
  262.   CLOSE #1
  263.   OPEN Datinfnam$ FOR OUTPUT AS #2
  264.     WRITE #2,Maxbezlaenge
  265.     WRITE #2,Anzmsk
  266.     WRITE #2,Satz
  267.     FOR I=1 TO Anzmsk
  268.       WRITE #2,Bezeichnung$(I)
  269.       WRITE #2,Laenge(I)
  270.     NEXT I
  271.   CLOSE #2  
  272. RETURN
  273.  
  274. Benutzen:
  275.   CLS
  276.   LINE INPUT "Name der Datei ? ";Datnam$
  277.   Datinfnam$=Drive$+Pfad$+Datnam$+".INFOS"
  278.   Datnam$=Drive$+Pfad$+Datnam$+".DATEN"
  279.   GOSUB LeseInfos
  280.   Msatz=Satznummer-1
  281.   OPEN "r",#1,Datnam$,550
  282.     FIELD #1,Laenge(1) AS In$(1),Laenge(2) AS In$(2),Laenge(3) AS In$(3),Laenge(4) AS In$(4),Laenge(5) AS In$(5),Laenge(6) AS In$(6),Laenge(7) AS In$(7),Laenge(8) AS In$(8),Laenge(9) AS In$(9),Laenge(10) AS In$(10),Laenge(11) AS In$(11)
  283.     Satz=1
  284.     WHILE Co$<>"Q"
  285.       CLS
  286.       Co$=""
  287.       PRINT "Aktuelle Datei : ";Datnam$,"Datensatz : ";Satz
  288.       PRINT "***---------------------===MaxiDAT - Befehle===-------------------------***"
  289.       PRINT "<+> : Nächster Datensatz    <->    : Letzter Datensatz <G> : Spring zu Satz"
  290.       PRINT "<S> : Suche Daten           <HELP> : Kurze Info        <E> : Satz editieren"
  291.       PRINT "<L> : Lösche Datensatz      <D>    : Satz ausdrucken   <Q> : Hauptmenü"
  292.       PRINT "***---------------------=======================-------------------------***"
  293.       PRINT 
  294.       GET #1,Satz
  295.       FOR I=1 TO Anzmsk
  296.         COLOR 3
  297.         PRINT Bezeichnung$(I);":"
  298.         COLOR 2
  299.         LOCATE I+7,Maxbezlaenge+4
  300.         PRINT In$(I)
  301.       NEXT I
  302.       COLOR 1
  303.       WHILE Co$<>"+" AND Co$<>"-" AND Co$<>"G" AND Co$<>"S" AND Co$<>"R" AND Co$<>"L" AND Co$<>"E" AND Co$<>"D" AND Co$<>"Q" AND Co$<>CHR$(139)
  304.         Co$=UCASE$(INKEY$)
  305.       WEND
  306.       IF Co$=CHR$(139) THEN
  307.         REM 139 ist der ASCII-Code der HELP-Taste
  308.         CLS
  309.         PRINT "Bedienungsinfos für den Datei-Lesen-Teil von MaxiDAT"
  310.         PRINT 
  311.         PRINT 
  312.         PRINT "<+>   -   Der numerisch nächste Datensatz wird angezeigt"
  313.         PRINT 
  314.         PRINT "<->   -   Der numerisch letzte Datensatz wird angezeigt"
  315.         PRINT 
  316.         PRINT "<G>   -   Sie werden nach der Nummer des gewünschten
  317.         PRINT "          Datensatzes gefragt"
  318.         PRINT 
  319.         PRINT "<S>   -   Geben Sie die Nummer des Feldes und dann den"
  320.         PRINT "          Suchbegriff an. MaxiDAT sucht vom momentanen"
  321.         PRINT "          Datensatz bis zum Schluß."
  322.         PRINT 
  323.         PRINT "<E>   -   Sie können die Daten des aktuellen Satzes edi-"
  324.         PRINT "          tieren."
  325.         PRINT 
  326.         PRINT "<L>   -   Der Inhalt des aktuellen Datensatzes wird gelöscht."
  327.         PRINT 
  328.         PRINT "<D>   -   Der aktuelle Datensatz wird ausgedruckt."
  329.         PRINT 
  330.         PRINT "<Q>   -   Sie verlassen diesen Programmteil und kommen zurück"
  331.         PRINT "          zum Hauptmenü."
  332.         PRINT 
  333.         PRINT "<HELP>-   Diese Seite"
  334.         PRINT 
  335.         PRINT 
  336.         PRINT "--- Beliebige Taste ---"
  337.         SLEEP
  338.         SLEEP
  339.       END IF
  340.       IF Co$="S" THEN
  341.         LOCATE 25,1
  342.         INPUT "In welchem Feld ";Sfeld
  343.         LINE INPUT "Nach welchem Begriff ";Such$
  344.         FOR I=Satz TO Msatz
  345.           GET #1,I
  346.           IF INSTR(In$(Sfeld),Such$) THEN
  347.             Satz=I
  348.             I=Msatz+1
  349.           END IF
  350.         NEXT I
  351.       END IF
  352.       IF Co$="+" THEN
  353.         IF Satz<Msatz THEN
  354.           Satz=Satz+1
  355.         ELSE
  356.           BEEP
  357.         END IF
  358.       END IF
  359.       IF Co$="-" THEN
  360.         IF Satz>1 THEN
  361.           Satz=Satz-1
  362.         ELSE
  363.           BEEP
  364.         END IF
  365.       END IF
  366.       IF Co$="G" THEN
  367.         LOCATE 24,1
  368.         INPUT "Welche Satznummer (* - letzte Nummer) ";N$
  369.         IF N$="*" THEN
  370.           Satz=Msatz
  371.         ELSE
  372.           Satz=ABS(INT(VAL(N$)))
  373.           IF Satz=0 THEN
  374.             Satz=1
  375.             BEEP
  376.           END IF
  377.           IF Satz>Msatz THEN
  378.             Satz=Msatz
  379.             BEEP
  380.           END IF
  381.         END IF
  382.       END IF
  383.       IF Co$="L" THEN
  384.         FOR I=1 TO 11
  385.           LSET In$(I)=""
  386.         NEXT I
  387.         PUT #1,Satz
  388.       END IF
  389.       IF Co$="D" THEN
  390.         FOR I=1 TO Anzmsk
  391.           LPRINT Bezeichnung$(I);"  :  ";In$(I)
  392.         NEXT I
  393.         LPRINT
  394.         LPRINT
  395.       END IF
  396.       IF Co$="E" THEN
  397.         FOR I=1 TO 11
  398.           Ein$(I)=In$(I)
  399.         NEXT I
  400.         GOSUB Eing
  401.         FOR I=1 TO 11
  402.           LSET In$(I)=Ein$(I)
  403.         NEXT I
  404.         PUT #1,Satz
  405.       END IF
  406.     WEND
  407.     Co$=""
  408.   CLOSE #1   
  409. RETURN
  410.  
  411. Loeschen:
  412.   req$(1)="Beim Weitermachen werden"
  413.   req$(2)="alle Daten aus dem Speicher"
  414.   req$(3)="gelöscht !!!"
  415.   req$(4)="Wirklich weitermachen ???"
  416.   REQUESTER 50,50,4,req$()," Ja "," Nein ",req
  417.   IF req=1 THEN
  418.     RUN
  419.   END IF
  420.   WINDOW OUTPUT 2
  421. RETURN
  422.  
  423. Ende:
  424.   req$(1)="Wollen Sie das Programm"
  425.   req$(2)="  wirklich beenden ?"
  426.   REQUESTER 50,50,2,req$()," Ja "," Nein ",req
  427.   IF req=1 THEN
  428.     WINDOW CLOSE 2
  429.     SCREEN CLOSE 1
  430.     SYSTEM
  431.   END IF
  432.   WINDOW OUTPUT 2
  433. RETURN
  434.  
  435. DruckeAlles:
  436.   CLS
  437.   LINE INPUT "Dateiname ohne Pfadangabe -> ";Dnam$
  438.   Datnam$=Drive$+Pfad$+Dnam$+".DATEN"
  439.   Datinfnam$=Drive$+Pfad$+Dnam$+".INFOS"
  440.   GOSUB LeseInfos
  441.   LPRINT "Dateiname          :";Dnam$
  442.   LPRINT "Anzahl Datensätze  :";Satznummer-1
  443.   LPRINT "Ausgedruckt am     :";
  444.   DATUM dtm$
  445.   LPRINT dtm$
  446.   LPRINT "Uhrzeit            :";TIME$
  447.   LPRINT
  448.   LPRINT
  449.   CLS       
  450.   OPEN "r",#1,Datnam$,550
  451.     FIELD #1,Laenge(1) AS In$(1),Laenge(2) AS In$(2),Laenge(3) AS In$(3),Laenge(4) AS In$(4),Laenge(5) AS In$(5),Laenge(6) AS In$(6),Laenge(7) AS In$(7),Laenge(8) AS In$(8),Laenge(9) AS In$(9),Laenge(10) AS In$(10),Laenge(11) AS In$(11)
  452.     PRINT "Daten ausdrucken..."
  453.     PRINT "Aktueller Datensatz : "
  454.     FOR I=1 TO Satznummer-1
  455.       LOCATE 5,5
  456.       PRINT I
  457.       GET #1,I
  458.       FOR Ii=1 TO Anzmsk
  459.         LPRINT Bezeichnung$(Ii);" : ";
  460.         LPRINT In$(Ii)
  461.       NEXT Ii
  462.       LPRINT 
  463.     NEXT I
  464.   CLOSE #1
  465.   LPRINT
  466.   LPRINT
  467.   LPRINT "--- Ende der Datei ---"
  468.   LPRINT
  469.   LPRINT
  470.   LPRINT
  471. RETURN
  472.  
  473. DruckeAllesOHNE:
  474.   CLS
  475.   LINE INPUT "Dateiname ohne Pfadangabe -> ";Dnam$
  476.   Datnam$=Drive$+Pfad$+Dnam$+".DATEN"
  477.   Datinfnam$=Drive$+Pfad$+Dnam$+".INFOS"
  478.   GOSUB LeseInfos
  479.   OPEN "r",#1,Datnam$,550
  480.     FIELD #1,Laenge(1) AS In$(1),Laenge(2) AS In$(2),Laenge(3) AS In$(3),Laenge(4) AS In$(4),Laenge(5) AS In$(5),Laenge(6) AS In$(6),Laenge(7) AS In$(7),Laenge(8) AS In$(8),Laenge(9) AS In$(9),Laenge(10) AS In$(10),Laenge(11) AS In$(11)
  481.     PRINT "Daten ausdrucken..."
  482.     PRINT "Aktueller Datensatz : "
  483.     FOR I=1 TO Satznummer-1
  484.       LOCATE 5,5
  485.       PRINT I
  486.       GET #1,I
  487.       FOR Ii=1 TO Anzmsk
  488.         LPRINT In$(Ii)
  489.       NEXT Ii
  490.       LPRINT 
  491.     NEXT I
  492.   CLOSE #1
  493.   LPRINT
  494.   LPRINT
  495. RETURN
  496.  
  497. DruckeAuswahl:
  498.   CLS
  499.   LINE INPUT "Dateiname ohne Pfadangabe -> ";Dnam$
  500.   INPUT "Satznummer ";Satz
  501.   Datnam$=Drive$+Pfad$+Dnam$+".DATEN"
  502.   Datinfnam$=Drive$+Pfad$+Dnam$+".INFOS"
  503.   GOSUB LeseInfos
  504.   LPRINT "Dateiname      :";Datnam$
  505.   LPRINT "Satznummer     ;";Satz
  506.   LPRINT
  507.   OPEN "r",#1,Datnam$,550
  508.     FIELD #1,Laenge(1) AS In$(1),Laenge(2) AS In$(2),Laenge(3) AS In$(3),Laenge(4) AS In$(4),Laenge(5) AS In$(5),Laenge(6) AS In$(6),Laenge(7) AS In$(7),Laenge(8) AS In$(8),Laenge(9) AS In$(9),Laenge(10) AS In$(10),Laenge(11) AS In$(11)
  509.     GET #1,Satz
  510.     FOR I=1 TO Anzmsk
  511.       LPRINT Bezeichnung$(I);"  :  ";
  512.       LPRINT In$(I)
  513.     NEXT I
  514.   CLOSE #1
  515.   LPRINT
  516.   LPRINT
  517. RETURN
  518.  
  519. ChangeDir:
  520.   WINDOW 5,"Bitte Pfadnamen eingeben : ",(1,20)-(400,30),16,1
  521.   LINE INPUT Pfad$
  522.   WINDOW CLOSE 5
  523.   WINDOW OUTPUT 2
  524.   IF Pfad$<>"" THEN
  525.     l=LEN(Pfad$)
  526.     IF MID$(Pfad$,l,1)<>"/" THEN
  527.       Pfad$=Pfad$+"/"
  528.       l=l+1
  529.     END IF
  530.     IF MID$(Pfad$,1,1)=":" THEN
  531.       Pfad$=MID$(Pfad$,2,l-1)
  532.     END IF
  533.     IF MID$(Pfad$,4,1)=":" THEN
  534.       Drive$=MID$(Pfad$,1,4)
  535.       Pfad$=MID$(Pfad$,5,l-4)
  536.     END IF
  537.   ELSE
  538.     Pfad$="MaxiDAT/Daten/"
  539.   END IF
  540. RETURN
  541.  
  542. ChangeDrive:
  543.   req$(1)="Welches Laufwerk ?"
  544.   REQUESTER 60,60,1,req$(),"DF0:","DF1:",Lw
  545.   IF Lw=1 THEN
  546.     Drive$="DF0:"
  547.   ELSE
  548.     Drive$="DF1:"
  549.   END IF
  550.   WINDOW OUTPUT 2
  551. RETURN
  552.  
  553. ZeigeDir:
  554.   WINDOW 6,"DIRECTORY VON DRIVE "+Drive$+", DIRECTORY "+Pfad$,,0,1
  555.   Inhalt$=Drive$+MID$(Pfad$,1,LEN(Pfad$)-1)
  556.   FILES Inhalt$
  557.   PRINT 
  558.   PRINT "-- Taste drücken --"
  559.   SLEEP
  560.   SLEEP
  561.   WINDOW CLOSE 6
  562.   WINDOW OUTPUT 2
  563. RETURN
  564.  
  565. DeleteFile:
  566.   LINE INPUT "Name (ohne Pfad- u. Laufwerksangabe) ";Dnam$
  567.   Dnam$=Drive$+Pfad$+Dnam$
  568.   req$(1)="Soll das File"
  569.   req$(2)=Dnam$
  570.   req$(3)="wirklich gelöscht werden ?"
  571.   REQUESTER 20,20,3,req$()," JA "," NEIN ",req
  572.   WINDOW OUTPUT 2
  573.   IF req=1 THEN
  574.     KILL Dnam$
  575.   END IF
  576. RETURN
  577.  
  578. GrafikdateiAnlegen:
  579.   CLS
  580.   PRINT "Datei anlegen..."
  581.   LINE INPUT "Name (ohne Pfad- u. Laufwerksangabe) ";Nam$
  582.   Datinfnam$=Drive$+Pfad$+Nam$+".INFOS"
  583.   OPEN Datinfnam$ FOR OUTPUT AS #2
  584.     WRITE #2,11          
  585.     WRITE #2,2
  586.     WRITE #2,1
  587.     WRITE #2,"Bezeichnung"
  588.     WRITE #2,5
  589.     WRITE #2,"Wert"
  590.     WRITE #2,5
  591.   CLOSE #2
  592. RETURN
  593.   
  594. Zeichnen:
  595.   CLS
  596.   M=0
  597.   PRINT "Balkengrafik zeichnen"
  598.   LINE INPUT "Dateiname ? ";Nam$
  599.   Datnam$=Drive$+Pfad$+Nam$+".DATEN"
  600.   Datinfnam$=Drive$+Pfad$+Nam$+".INFOS"
  601.   GOSUB LeseInfos
  602.   CLS
  603.   IF gr THEN
  604.     ERASE B$
  605.     ERASE W
  606.   END IF
  607.   gr=1
  608.   INPUT "Höchster y-Wert ";M
  609.   CLS 
  610.   DIM B$(Satznummer),W(Satznummer)
  611.   OPEN "R",#1,Datnam$,550
  612.     FIELD #1,Laenge(1) AS In$(1),Laenge(2) AS In$(2),Laenge(3) AS In$(3),Laenge(4) AS In$(4),Laenge(5) AS In$(5),Laenge(6) AS In$(6),Laenge(7) AS In$(7),Laenge(8) AS In$(8),Laenge(9) AS In$(9),Laenge(10) AS In$(10),Laenge(11) AS In$(11)
  613.     FOR I=1 TO Satznummer-1
  614.       GET #1,I
  615.       B$(I)=In$(1)
  616.       W(I)=VAL(In$(2))
  617.     NEXT I
  618.     LOCATE 1,1
  619.     PRINT M
  620.     LOCATE 16,1
  621.     PRINT M/2
  622.     ScaleY=350/M
  623.     ScaleX=INT(550/(Satznummer-1))
  624.     COLOR 3
  625.     FOR I=1 TO 640 STEP 10
  626.       LINE (I,0)-(I,400)
  627.     NEXT I
  628.     FOR I=1 TO 400 STEP 10
  629.       LINE (0,I)-(640,I)
  630.     NEXT I   
  631.     FOR I=1 TO Satznummer-1
  632.       COLOR 1
  633.       LINE ((I*ScaleX)+3,300-W(I)*ScaleY)-(((I+1)*ScaleX)-3,350),,bf
  634.       COLOR 2,1
  635.       LOCATE 31,3+INT((I*ScaleX)/8)
  636.       PRINT B$(I);
  637.     NEXT I
  638.     COLOR 1,0
  639.   CLOSE #1
  640.   WHILE INKEY$=""
  641.   WEND  
  642.   CLS
  643. RETURN
  644.   
  645. ProgrammInfo:
  646.   CLS
  647.   PRINT "MaxiDAT - AMIGA"
  648.   PRINT "---------------"
  649.   PRINT 
  650.   PRINT "Version 2.02, geschrieben März 1989 von Christoph Hust"
  651.   PRINT 
  652.   PRINT "Änderung zu Version 2.01:"
  653.   PRINT "Grafikeinbindung"
  654.   PRINT 
  655.   PRINT 
  656.   PRINT "Wenn ihnen das Programm gefällt, bitte senden sie ungefähr 20 DM an"
  657.   PRINT "folgende Adresse:"
  658.   PRINT 
  659.   PRINT "        CHRISTOPH HUST"
  660.   PRINT "        MAINZER STRASSE 30"
  661.   PRINT "        D-5407 BOPPARD 1"
  662.   PRINT 
  663.   PRINT "MAXIDAT IST EIN PUBLIC DOMAIN PROGRAMM. ES DARF FREI KOPIERT WERDEN."
  664.   PRINT 
  665.   PRINT 
  666.   PRINT "----- taste drücken ----- taste drücken ----- taste drücken -----"
  667.   SLEEP      
  668.   SLEEP
  669. RETURN
  670.  
  671. REM ******************************************************************
  672. REM *** Hier stehen die Unterprogramme, die von mehreren Programm- ***
  673. REM *** funktionen aus aufgerufen werden                           ***
  674. REM ******************************************************************
  675.  
  676. Eing:
  677.   WHILE Jn$<>"J"
  678.     CLS
  679.     PRINT "Daten eingeben.        Satznummer:";Satz
  680.     PRINT 
  681.     FOR I=1 TO Anzmsk
  682.       COLOR 3
  683.       PRINT Bezeichnung$(I);":"
  684.       COLOR 2
  685.       LOCATE I+2,Maxbezlaenge+4
  686.       PRINT Ein$(I)
  687.     NEXT I
  688.     COLOR 1
  689.     FOR I=1 TO Anzmsk
  690.       LOCATE I+2,Maxbezlaenge+4
  691.       LINE INPUT Eing$
  692.       IF Eing$<>"" THEN
  693.         Ein$(I)=Eing$
  694.       END IF
  695.     NEXT I
  696.     LOCATE 20,1
  697.     Jn$=""
  698.     INPUT "Eingaben OK ";Jn$
  699.     Jn$=LEFT$(UCASE$(Jn$),1)
  700.   WEND  
  701.   Jn$=""    
  702. RETURN
  703.  
  704. LeseInfos:
  705.   OPEN Datinfnam$ FOR INPUT AS #2
  706.     INPUT #2,Maxbezlaenge
  707.     INPUT #2,Anzmsk
  708.     INPUT #2,Satznummer
  709.     FOR I=1 TO Anzmsk
  710.       LINE INPUT #2,Bezeichnung$(I)
  711.       Bezeichnung$(I)=MID$(Bezeichnung$(I),2,LEN(Bezeichnung$(I))-2)
  712.       INPUT #2,Laenge(I)
  713.     NEXT I
  714.   CLOSE #2
  715. RETURN
  716.  
  717. REM ******************************************************************
  718. REM *** Hier sind einige neue BASIC-"Befehle", die auch in eigenen ***
  719. REM *** Programmen untergebracht werden können                     ***
  720. REM ******************************************************************
  721.  
  722. SUB REQUESTER (Posx,Posy,Anztxt,txt$(),Txt1$,Txt2$,req) STATIC
  723.   dummy=MOUSE(0)
  724.   FOR I=1 TO Anztxt
  725.     IF LEN(txt$(I))>Mlaenge THEN Mlaenge=LEN(txt$(I))
  726.   NEXT I
  727.   Titel$="Achtung !!"+SPACE$(Mlaenge)
  728.   WINDOW 5,Titel$,(Posx,Posy)-((Posx+(8*Mlaenge))+40,(Posy+(8*Anztxt))+20),18,1
  729.   FOR I=1 TO Anztxt
  730.     PRINT "  "+txt$(I)
  731.   NEXT I
  732.   T1=Mlaenge\4-LEN(Txt1$)\2
  733.   LOCATE Anztxt+2,T1
  734.   PRINT Txt1$;
  735.   T2=Mlaenge-LEN(Txt2$)\2
  736.   LOCATE Anztxt+2,T2
  737.   PRINT Txt2$;
  738.   x1=((T1-1)*8)-5
  739.   y1=((Anztxt+2)*8)+1
  740.   x2=(x1+(8*LEN(Txt1$)))+5
  741.   y2=((Anztxt+1)*8)-4
  742.   LINE (x1,y1)-(x2,y2),,B
  743.   x3=((T2-1)*8)-5
  744.   y3=((Anztxt+2)*8)+1
  745.   x4=(x3+(8*LEN(Txt2$)))+5
  746.   y4=((Anztxt+1)*8)-4
  747.   LINE (x3,y3)-(x4,y4),,B
  748.   x=0:y=0
  749.   WHILE NOT((x>x1 AND x<x2 AND y<y1 AND y>y2) OR (x>x3 AND x<x4 AND y<y3 AND y>y4))
  750.     WINDOW OUTPUT 1
  751.     IF MOUSE(0)<>0 THEN
  752.       x=MOUSE(3)
  753.       y=MOUSE(4)
  754.     END IF
  755.   WEND
  756.   IF (x>x1 AND x<x2) THEN
  757.     req=1
  758.   ELSE
  759.     req=2
  760.   END IF
  761.   WINDOW CLOSE 5
  762. END SUB
  763.  
  764. SUB DATUM (DatD$) STATIC
  765.   DatD$=MID$(DATE$,4,2)
  766.   DatD$=DatD$+"."
  767.   DatD$=DatD$+MID$(DATE$,1,2)
  768.   DatD$=DatD$+"."
  769.   DatD$=DatD$+MID$(DATE$,7,4)
  770. END SUB
  771.  
  772. REM ******************************************************
  773. REM *** Diese Routine wird beim Auftritt eines Fehlers ***
  774. REM *** aufgerufen.                                    ***
  775. REM ******************************************************
  776.  
  777. Fehler:
  778.   Fr=ERR
  779.   WINDOW 3,"Fehler aufgetreten:",(1,1)-(400,50),16,1
  780.   WINDOW OUTPUT 3
  781.   PRINT "BASIC-Fehlernummer:";Fr
  782.   PRINT 
  783.   BEEP
  784.   IF Fr=64 THEN
  785.     PRINT "Ungültiger bzw. falscher Dateiname!"
  786.   END IF
  787.   IF Fr=63 THEN
  788.     PRINT "Die zulässige Satznummer ist überschritten!"
  789.   END IF
  790.   IF Fr=77 THEN
  791.     PRINT "Deadlock Error. (???)"
  792.   END IF
  793.   IF Fr=68 THEN
  794.     PRINT "Gerät nicht verfügbar!"
  795.   END IF
  796.   IF Fr=57 THEN
  797.     PRINT "Technische Probleme bei einem I/O-Vorgang!"
  798.   END IF
  799.   IF Fr=61 THEN
  800.     PRINT "Diskette voll!"
  801.   END IF
  802.   IF Fr=58 THEN
  803.     PRINT "Datei existiert bereits!"
  804.   END IF
  805.   IF Fr=55 THEN
  806.     PRINT "Datei ist bereits geöffnet!"
  807.   END IF
  808.   IF Fr=53 THEN
  809.     PRINT "Datei existiert nicht!"
  810.   END IF
  811.   IF Fr=62 THEN
  812.     PRINT "Versuch, nach Dateiende Werte einzulesen!"
  813.   END IF
  814.   IF Fr=51 THEN
  815.     PRINT "Internal Error im AmigaBASIC!"
  816.   END IF
  817.   IF Fr=70 THEN
  818.     PRINT "Erlaubnis verweigert. Wahrscheinlich ist die Disk schreibgeschützt ?"
  819.   END IF
  820.   IF Fr=36 THEN
  821.     PRINT "SUB-Routine bereits im Einsatz!"
  822.   END IF
  823.   IF Fr=13 THEN
  824.     PRINT "Fehlende Typ-Übereinstimmung bei der Parameterübergabe!"
  825.   END IF
  826.   IF Fr=49 THEN
  827.     PRINT "Unbekannte Diskette!"
  828.   END IF
  829.   IF Fr=6 THEN
  830.     PRINT "Zahl zu groß!"
  831.   END IF
  832.   PRINT 
  833.   PRINT "Taste drücken !!"
  834.   WHILE INKEY$=""
  835.   WEND
  836.   WINDOW CLOSE 3
  837.   WINDOW 2
  838.   WINDOW OUTPUT 2
  839.   CLOSE
  840. RESUME Hauptprogramm
  841.  
  842.